const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// 中间件 midddleware
// 本质是一个函数  函数里面有三个参数 req  res  next

/* 
4类
1.自定义中间件

2.第三方中间件
bodyParser.urlencoded({
    extended: true
})
3.内置中间件
express.static('public')
4.路由器中间件


*/


app.use(express.static('public'));
app.use(bodyParser.urlencoded({
    extended: true
}));

// 自定义中间件  全局中间件  局部中间件
// 可以进行拦截操作
// 需求：有token往下执行，没有就不往下执行提示用户没有token
/* app.use('/', (req, res, next) => {
    console.log(req.query);
    const {
        token
    } = req.query; //{token:'123'}
    req.tianqing = '天庆回来变白了？？？';
    if (token) {
        next();
    } else {
        res.send('没有token');
    }
}) */
function midddleware(req, res, next) {
    console.log(req.query);
    const {
        token
    } = req.query; //{token:'123'}
    req.tianqing = '天庆回来变白了？？？';
    if (token) {
        next();
    } else {
        res.send('没有token');
    }
}

app.post('/register', (req, res) => {
    console.log(req.body);
    res.send('提交成功！！');
})

// 局部中间件
app.get('/second', midddleware, (req, res) => {
    console.log('test 全局中间件！！');
    res.send('庆儿啊');
})
// app.get(路径，中间件1，中间件2，中间件3...，callback)
// 局部中间件使用一两个就行，不要使用太多
app.get('/index', (req, res) => {
    console.log(req.tianqing);
    res.end('xxx');
})



app.listen(3000, err => {
    if (!err) console.log('启动');
    else console.log(err);
})